package com.zhang.spark_1.spark_core.operator.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @title:
 * @author: zhang
 * @date: 2021/12/5 18:51 
 */
object Spark16_RDD_Operator_Transform {

  def main(args: Array[String]): Unit = {
    //获取spark的连接
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("operator")
    val sc: SparkContext = new SparkContext(conf)
    //TODO groupByKey
    val rdd: RDD[(String, Int)] = sc.makeRDD(List(
      ("a", 1), ("a", 2), ("a", 3), ("b", 4)
    ))

    //groupByKey:将数据源中的数据，相同key的数据分在一个组中，形成一个对偶元组
    //元组中的第一元素就是key，元组中的第二元素就是相同key的value的集合
    val groupRDD: RDD[(String, Iterable[Int])] = rdd.groupByKey()
    groupRDD.collect().foreach(println)

    //groupByKey:将数据源中的数据，相同key的数据分在一个组中，形成一个对偶元组
    //元组中的第一元素就是key，元组中的第二元素就是相同key的（key,value）的集合
    val groupBy: RDD[(String, Iterable[(String, Int)])] = rdd.groupBy(_._1)
    groupBy.collect().foreach(println)
    sc.stop()

  }
}
